const {
  wxLogin,
  getAllOrder,
  addCollection
} = require('../../request/api.js');
import Cache from "../../request/cache";
const App = getApp()
Page({
  data: {
    isAuthDialogVisible: false, // 控制授权弹窗的显示  
    longitude: '116.304072',
    latitude: '39.974198',
    orderArr: [],
    markers: [],
    popShow: false,
    selectedItem: {}, //选中的发布；
    userId: '', //当前登录用户id
    // 不进行视图层渲染；
    $map: null,
    orders: [],
    readyed: false
  },
  onLoad() {
    console.log('home=============onLoad')
    // this.getOrder();
    this.getLocation();
  },
  gotoInfo(){
    setTimeout(() => {
      wx.reLaunch({
        url: '/pages/center/index'
      })
    }, 1000);
  },
  checkLoginState(){
    let token = Cache.getCache("token");
    //console.log('token:',token)
    if(token != null && token.length>0){  
      //console.log('token存在:' + token);  
      return true;  
    } else {  
      //console.log('token不存在');  
      return false;  
    }  
  },
  onShow() {
    this.data.readyed && this.getOrder();
    // console.log("首页请求订单=====")
    this.data.readyed = true;
  },
  onShareAppMessage() {
  },
  onReady() {
    this.getOrder();
    this.data.$map = wx.createMapContext('map', this)
  },
  getLocation() {
    // wx.chooseLocation({
    //   success: res => {
    //     console.log(res)
    //   }
    // })
    wx.getLocation({
      type: 'gcj02',
      success: (result) => {
        this.setData({
          latitude: result.latitude,
          longitude: result.longitude,
          markers: [{
            latitude: result.latitude,
            longitude: result.longitude,
            id: -1,
            iconPath: '../../static/images/circle.png',
            width: 30,
            height: 30,
            vanchor: {
              x: .5,
              y: .5
            }
          }]
        })
      }
    })
  },
  huishoudenglu(){//新登录
    // 检查是否已登录，这里只是一个示意，具体逻辑需根据你的业务逻辑来  
    if (!this.checkLogin()) {  
      // 未登录，引导用户登录  
      console.log('未登录，引导用户登录  ==================开始')
      // this.setData({  
      //   isAuthDialogVisible: true,  
      // });  
      this.houtaiLogin()//后台登录
    } else {  
      console.log('已登录，检查本地是否有存储用户信息，没有则重新获取  ==================开始')
      // 已登录，检查本地是否有存储用户信息，没有则重新获取  
      const userInfo = wx.getStorageSync('userInfo');  
      if (!userInfo) {  
        // 如果没有存储用户信息，可能需要重新获取或提示用户  
        // 这里可以调用获取用户信息的函数，逻辑与上面类似  
        console.log('已登录，检查本地是否有存储用户信息==================code:',userInfo)
      }  
    }  
  },
  // houtaiLogin(){//新登录
  //   wx.login({
  //     success: async res => {
  //       // console.log('维信登录==================code:'+res.code)
  //       // 发送 res.code 到后台换取 openId, sessionKey, unionId
  //       const data = await wxLogin({
  //         "code": res.code
  //       })
  //       console.log('后台登录成功==================返回1')
  //       console.log(data)
  //       console.log('后台登录成功==================返回2')
  //       // console.log('设置全局的个人信息==================开始')
  //       // 登录成功，获取用户信息  
  //       wx.getUserProfile({
  //         desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
  //         success: (res) => {
  //           console.log('用于完善会员资料==================返回1')
  //           console.log(e)
  //           console.log(res)
  //           this.setData({
  //             userInfo: res.userInfo,
  //             hasUserInfo: true
  //           })
  //         }
  //       })
  //       // wx.getUserProfile({  
  //       //   success: userRes => {  
  //       //     console.log('getUserProfile==================',userRes)
  //       //     // 用户点击了允许授权按钮  
  //       //     const { userInfo, encryptedData, iv } = userRes;  
  //       //     // 你可以将 userInfo 直接存储，或者将 userInfo 和 encryptedData, iv 发送到服务器解密用户信息
  //       //     console.log('userInfo==================',userInfo)
  //       //     // 这里假设我们直接存储 userInfo  
  //       //     wx.setStorageSync('userInfo', userInfo);  
  //       //     // 如果需要存储昵称和头像，可以单独提取  
  //       //     wx.setStorageSync('nickName', userInfo.nickName);  
  //       //     wx.setStorageSync('avatarUrl', userInfo.avatarUrl);  
  //       //   }  
  //       // });  
  //       console.log('设置全局的个人信息==================结束')
  //     }
  //   })
  // },
  checkLogin(){
    // 从本地存储中获取 token  
    const token = wx.getStorageSync('loginToken');  
    // 检查 token 是否存在且不为空  
    if (token && token.trim() !== '') {  
      // token 存在，假设它是有效的（在实际应用中，你可能需要验证 token 的有效性）  
      return true; // 用户已登录  
    } else {  
      // token 不存在或为空  
      return false; // 用户未登录  
    }  
  },
  wxLogin() {//默认检查登录
    wx.login({
      success: async res => {
        // console.log('维信登录==================code:'+res.code)
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        const data = await wxLogin({
          "code": res.code
        })
        // console.log('维信登录==================返回1')
        // console.log(data)
        // console.log('维信登录==================返回1')
        // console.log('设置全局的个人信息==================开始')
        //console.log('token:'+data.token)
        wx.setStorageSync('token', data.token);
        wx.setStorageSync('userId', data.userId);
        App.globalData.userId = data.userId;
        this.setData({
          userId: data.userId
        })
        // console.log('设置全局的个人信息==================结束')
        // console.log('维信登录成功==================开始请求订单信息')
        this.getOrder()
      }
    })
  },
  // 刷新订单的函数  
  refreshOrders: function() {  
    this.getOrder()
  },
  // 获取所有订单
  async getOrder() {
    //console.log("首页获取代码======================1")
    const uid = wx.getStorageSync('userId'); 

    const data = await getAllOrder({
      releaseWechatUid: uid
    })
    let markers = this.getMarkers(data.items);
    // console.log('markers===============1')
    // console.log(data)
    // console.log(markers)
    // console.log('markers===============2')
    //console.log(data.items)
    this.data.orders = data.items;
    this.data.orders.forEach(item => {
      item.filePath = App.globalData.imgBase + item.recoveryImgPath
    })

    if (data.items && data.items.length > 3) {
      let arr = [],
        sArr = [];
      data.items.forEach((item, index) => {
        sArr.push(item);
        if ((index + 1) % 3 === 0 || index === data.items.length - 1) {
          arr.push(JSON.parse(JSON.stringify(sArr)));
          sArr = [];
        }
      })
      
      this.setData({
        orderArr: arr,
        markers: markers,
        selectedItem: data.items[0]
      })
    } else {
      console.log(data)
      if(data.total>0){
        this.setData({
          orderArr: [data.items],
          markers: markers,
          selectedItem: data.items[0]
        })
      }
    }
  },
  getMarkers(rows) {
    let markers = [{
      latitude: this.data.latitude,
      longitude: this.data.longitude,
      id: -1,
      iconPath: '../../static/images/circle.png',
      width: 30,
      height: 30,
      vanchor: {
        x: .5,
        y: .5
      }
    }];
    let _this = this;
    if (!rows || rows.length <= 0) {
      return markers
    }
    rows.forEach((item, index) => {
      markers.push({
        latitude: item.locationLat,
        longitude: item.locationLon,
        id: index,
        iconPath: _this.getIconPath(item.recoveryCategory),
        width: 30,
        height: 25,
        vanchor: {
          x: .5,
          y: .5
        }
      })
    })
    return markers;
  },
  getIconPath(name) {
    switch (name) {
      case '纸皮类':
        return '../../static/images/zhipilei.png';
        break;
      case '金属类':
        return '../../static/images/jinshulei.png';
        break;
      case '塑料类':
        return '../../static/images/suliaolei.png';
        break;
      case '家电类':
        return '../../static/images/jiadianlei.png';
        break;
      case '其他废品':
        return '../../static/images/yifulei.png';
        break;
    }
  },
  goCenter() {
    this.data.$map.moveToLocation({
      latitude: this.data.latitude,
      longitude: this.data.longitude,
    })
  },
  visibelChange() {
    this.setData({
      popShow: false
    })
  },
  getUserProfile() {
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        this.wxLogin(res)
      }
    })
  },
  gotoShoucang() {
    wx.navigateTo({
      url: '../MyFavorites/index',
    })
  },
  getUserInfo() {
    wx.getUserInfo({
      success: (result) => {
        console.log(result)
        this.wxLogin(result)
      }
    })
  },
  markerTap(e) {
    const markerId = e.markerId;
    console.log("弹窗markerId:",markerId)
    console.log(this.data.orders)
    let selectedItem = this.data.orders.filter((item, index) => markerId == index)[0];

    console.log("弹窗:",selectedItem)

    this.setData({
      selectedItem: selectedItem,
      popShow: true
    })
  },
  goCollect() {
    wx.navigateTo({
      url: '/pages/MyFavorites/index',
    })
  },
  goToPublishPage() {
    console.log('去发布========')
    // wx.navigateTo({
    //   url: '/pages/release/index',
    // })
    wx.switchTab({  
      url: '/pages/release/index',  
    })
  },
  async addCollect() {
    const uid = wx.getStorageSync('userId'); 
    //var uid=App.globalData.userId;
    console.log('准备异步收藏接口：'+uid)
    console.log('准备异步收藏接口：',this.data)
    console.log('准备异步收藏接口：',this.data.selectedItem)
    await addCollection({
      // ...this.data.selectedItem,
      recoveryOrderId:this.data.selectedItem.id,
      recoveryOrderNo:this.data.selectedItem.recoveryOrderNo,
      remark:this.data.selectedItem.recoveryRemarks,
      cuserId: uid
    })
    wx.showToast({
      title: '收藏成功！'
    })
    this.setData({
      popShow: false
    })
    this.getOrder()
  },
  goRelease() {
    wx.switchTab({
      url: '/pages/release/index',
    })
  }
})